import random

# 随机生成15个学生成绩
random.seed(1)
student = "ABCDEFGHIJKLMNO"
score = {}
for i in student:
    score[i] = score.get(i, random.randint(35, 100))

# 1 输出学生字典
print(score)

# 2 将学生成绩降序排列输出
dicta = sorted(score.items(), key=lambda x: x[1], reverse=True)
a = dict(dicta)
print("学生成绩降序排列:", dicta)

# 3 计算学生成绩平均分、最大值、最小值
average = sum(score.values()) / len(score)
big = max(score.values())
small = min(score.values())
print("学生成绩平均分是{:^.2f}\n最高分是{:^.2f}\n最低分是{:^.2f}".format(average, big, small))

# 4 统计不及格人数
b = 0
for x in score.values():
    if x < 60:
        b = b + 1
print("不及格的人数为：{}".format(b))

# 5 输入名字查成绩判定
answer = input("是否想要查询同学的成绩？(y/n)")
while True:
    if answer == "y" or answer == "yes" or answer == "Y":
        student_name = input("请输入同学的名字(A—O）：")
        if student_name in student: #如果输入的名字在15个学生里面
            student_score = score.get(student_name, 0) #获取分数
            print(student_score)
            if student_score > average:
                print("该生成绩属于上等水平！")
            elif student_score == average:
                print("该生成绩属于中等水平！")
            else:
                print("该生成绩属于下等水平！")
            answer = input('是否继续查询 ? y/n :') #再次询问是否进行查询，可多次查询；不想查询也可直接退出
            if answer == 'y' or answer == 'Y' or answer == 'yes':
                continue #回到35行继续进行
        else: #针对在35行输入其他y和n其他的字符情况
            student_name = input("请重新输入学生名字！(A—O）")
    elif answer == "n" or answer == "no" or answer == "N":
        print("谢谢你，再见！")
        break #中断程序
    else: #针对报错，如果输入其他则跳至该步骤
        answer = input("输入错误，请重新输入是否查询？(y/n)")
        continue #回到35行继续进行